# coding: utf-8
import nltk
import re

# Tokenizer
# quebra a o texto em tokens
def tokenizer(texto):
    pattern = r'(\d+\s?[\w-]\s?\d+)|(\w?((\$\s)|\$)?\d)+(\.\d+)*(,\d+)?|(Sao|Santo)\s\w+|\w+|[^\w\s]+'
    #pattern = r'(\d+\s?[\w-]\s?\d+)|(\w?((\$\s)|\$)?\d)+(\.\d+)*(,\d+)?|(Sao|Santo)\s\w+|\w+|[^\w\s]+'
    # explicao do pattern:
    # (\d+\s?[\w-]\s?\d+) --> pega definicoes do tipo 1 a 0, 1 - 1
    # \w - qualquer palavra
    # [^\w\s]+ - caracteres que nao sejam espaco
    # (\w?((\$\s)|\$)?\d)+(\.\d+)*(,\d+)? - valores monetarios ou numericos do tipo X.XXX,XX
    # (Sao|Santo)\s\w+ -> times como nome de santo
    
    return nltk.tokenize.regexp_tokenize(texto, pattern)

# aplica regras de normalizacao nas tokens

def normalizador(tokens = []):
    return tokens.lower() not in ('o', 'a', 'os', 'as')
    
 